package com.hon.legionnaire.negocio.vo;

import java.io.Serializable;

import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;

import org.hibernate.annotations.Fetch;
import org.hibernate.annotations.FetchMode;

@Entity
@Table(name = "produtoCompra")
@NamedQueries ({
	@NamedQuery(name = "loadAllProdutoCompra", query = "from ProdutoCompraVO as pc where pc.compraVO.codigo = :codigo"),
})
public class ProdutoCompraVO implements Serializable {

	private static final long serialVersionUID = 1L;

	@EmbeddedId  
	private ProdutoCompraPK produtoCompraPK;
	
	@Column(name = "preco_compra")
	private Float precoCompra;
	
	@Column(name = "custo_compra")
	private Float custoCompra;
	
	
	@Column(name = "quantidade_comprada")
	private Integer quantidadeComprada;
	
	
	@JoinColumn(name="cod_compra", 
			referencedColumnName="cod_compra",
			nullable = false,
			insertable=false, updatable=false)
	@ManyToOne(optional=false, fetch= FetchType.LAZY)
	@Basic(optional=false)
	@Fetch(FetchMode.JOIN)
	private CompraVO compraVO;
	
	@JoinColumn(name="cod_produto", 
			referencedColumnName="cod_produto",
			nullable = false,
			insertable=false, updatable=false)
	@ManyToOne(optional=false, fetch= FetchType.LAZY)
	@Basic(optional=false)
	@Fetch(FetchMode.JOIN)
	private ProdutoVO produtoVO;
	
		
	public ProdutoCompraVO(){
		produtoCompraPK = new ProdutoCompraPK();
		produtoVO = new ProdutoVO();
	}
	
	public ProdutoCompraPK getProdutoCompraPK() {
		return produtoCompraPK;
	}

	public void setProdutoCompraPK(ProdutoCompraPK produtoCompraPK) {
		this.produtoCompraPK = produtoCompraPK;
	}


	public Float getPrecoCompra() {
		return precoCompra;
	}


	public void setPrecoCompra(Float precoCompra) {
		this.precoCompra = precoCompra;
	}


	public Integer getQuantidadeComprada() {
		return quantidadeComprada;
	}


	public void setQuantidadeComprada(Integer quantidadeComprada) {
		this.quantidadeComprada = quantidadeComprada;
	}
	

	public CompraVO getCompraVO() {
		return compraVO;
	}

	public void setCompraVO(CompraVO compraVO) {
		this.compraVO = compraVO;
	}

	public ProdutoVO getProdutoVO() {
		return produtoVO;
	}

	public void setProdutoVO(ProdutoVO produtoVO) {
		this.produtoVO = produtoVO;
	}

	public Float getCustoCompra() {
		return custoCompra;
	}

	public void setCustoCompra(Float custoCompra) {
		this.custoCompra = custoCompra;
	}
}